QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 93|回复: 0
打印 上一主题 下一主题

使用html画一个键盘

[复制链接]
字体大小: 正常 放大

796

主题

1

听众

1970

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>
    - J1 a6 K8 I3 A( R3 U0 v
  2. <html lang="en">* A! C% x  E8 E' N
  3. <head>( ~* p1 Z2 z: R; h: _
  4.   <meta charset="UTF-8">1 t  R: H\" M* Q% e
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">
    ' ^- W- @/ u9 ]* R6 x
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">7 I5 R5 w# S+ ~5 L# Y4 m4 d+ u\" s
  7.   <link rel="stylesheet" >
      f; K. s; T8 q! T5 Z
  8.   <title>vector examples Keyboard</title>2 N\" W4 U* S: @; k8 u) a
  9. </head>
    ! {1 V9 t* F; G& v+ [$ n9 c
  10. <body>
    6 m: q/ Y! _* H* p
  11.   <div id="keyboard"></div>' r/ q* `1 N; z& i( H' {, P
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->
    ; q: G0 g. T: R$ z
  13.   <script type="module" src="./temp.js"></script>1 }+ @( b, i5 E! q
  14. </body>) J8 j2 j( E2 B0 Q3 i8 W
  15. </html>
    8 x% s8 c9 Y5 [
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";, z* H/ t' z2 q% z
  2. console.log("Interactive", Interactive);5 x* O\" u# n: [: [
复制代码
  1. /**6 n9 T6 c% {\" ?1 {\" h
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard& N& G  Y0 I& f& X/ Y! \0 V6 E8 ?
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    ; m9 E1 R\" m4 n5 A6 n3 r; o6 E* l
  4. * @tags [input]( p8 i6 b) n  i! l  W
  5. */- `& M0 u$ ?& E- D
  6. // import { Interactive, getScriptName } from "../../index.js";
    * e( P: j5 u+ n7 u, B9 i$ ?3 Z4 c
  7. // let interactive = new Interactive(getScriptName());/ I- h' Y, X- B+ X- d0 Y
  8. import Interactive from "https://vectorjs.org/interactive.js";
    ) D( \4 `& E% ]) p
  9. let interactive = new Interactive("keyboard");
      ]+ O! G5 d7 D4 s\" n
  10. interactive.width = 768;3 q, t& n$ f) P7 Y3 \0 x2 p) o
  11. interactive.height = 300;
    5 y+ [9 d! ]8 p+ ]4 ]* @
  12. interactive.border = true;
    2 j+ w\" [& z0 e* u
  13. let buffer = "";3 ]0 U- l# S$ @- q* t! j& x
  14. let keys = [
    3 E2 h4 H/ F; t0 l/ D; k; x) \
  15.   [% ^3 i2 M0 E1 }+ A6 u' ^
  16.     "`",$ V; i2 X3 K$ r+ F. \2 Z& Q! C
  17.     "1",
    ) M% k3 T& f/ h5 }' W\" X- Z* Y- t+ c
  18.     "2",
    8 G7 Q\" ^. d: W9 f
  19.     "3",+ }% x0 n4 W& l) H, |: M8 c
  20.     "4",
    . |\" o% Z, J; J. ?$ |4 F3 R
  21.     "5",9 k2 Y9 }) R$ I- \
  22.     "6",
    $ }$ n0 b3 }\" T) I/ m\" p6 g
  23.     "7",
    + k; |0 Y; L5 E& a' @5 B
  24.     "8",* a, i( ]. U5 k
  25.     "9",3 D2 E: @( |8 J4 J% L# Q& t+ N! k
  26.     "0",
    & H# G* p! x- S+ n5 r4 n2 ?2 T9 N
  27.     "-",
    + I+ ]) |3 c. q4 ^# h
  28.     "=",
    \" O$ T  B. D! U2 {# Y
  29.     "Backspace",' U: e9 m9 N2 ~4 E3 z4 H\" U! M
  30.   ],0 E, Q+ R# P2 @) z6 m1 f$ U\" J. @6 g
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],# l6 e% d! I! z! |
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],4 c3 }6 A' O/ }( D$ d) @% \2 C4 A
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],
    * K( p2 N( T( V+ W9 X
  34.   [
    ; |( ^' w- C. ]1 ~& Q) i3 j
  35.     "fn",2 ]* E7 g\" Z1 E) g4 J
  36.     "Control",
    * q% _% M# O( B& V- f
  37.     "Alt",% Y) z2 z* e  o- v. z
  38.     "Meta",, H7 Y( f! p1 ]% g$ L
  39.     " ",
    & g3 o; |! S  o8 }1 m
  40.     "Meta",
    6 n2 J- X+ _' {$ K0 C& w% d: R
  41.     "Alt",
    * t* d6 S% q$ g' }  z- ^! w) A. j
  42.     "ArrowLeft",
    0 H7 n+ a1 |4 D0 _! b: E
  43.     "ArrowUp",, W, |0 S. w; j7 A0 _- W
  44.     "ArrowDown",
    1 l& K* k  ~0 E# }  |* q* H2 d# v) `
  45.     "ArrowRight",
    . E6 I1 T8 S! K9 S3 H
  46.   ],
    9 y6 P\" I- e: A7 w2 D  k
  47. ];
    ) S% t  M, B7 c' @
  48. let buttons = [];
    . ^$ x- y4 N: l' R- z1 C
  49. let keycodes = {
    , S. h+ S( d8 a. `5 |
  50.   0: { Symbol: 0, Shift: ")" },
    . G; t& t  h& `9 {1 ~: a
  51.   1: { Symbol: 1, Shift: "!" },% R; c# ]4 k* t4 k1 J4 F3 W6 y$ o
  52.   2: { Symbol: 2, Shift: "@" },; ?3 |4 {* R( D! A
  53.   3: { Symbol: 3, Shift: "#" },, F9 a* e\" Z& \* ]* o
  54.   4: { Symbol: 4, Shift: "$" },! `7 S. c( W8 `- q7 Y  v- C7 I
  55.   5: { Symbol: 5, Shift: "%" },
      q6 h. ^+ o# V7 N0 e& F
  56.   6: { Symbol: 6, Shift: "^" },( w! @: b; H8 M% j+ N) V
  57.   7: { Symbol: 7, Shift: "&" },. k9 z+ Z8 X) p1 A# b# i
  58.   8: { Symbol: 8, Shift: "*" },
    ' A! ?# q, _7 g
  59.   9: { Symbol: 9, Shift: "(" },: ]$ v9 i0 B) w7 R! t- E* t) [
  60.   a: { Symbol: "a", Shift: "A" },2 I6 ^: o/ F1 E+ f
  61.   b: { Symbol: "b", Shift: "B" },\" L# L: |9 \7 i# O! B; Q* o( X
  62.   c: { Symbol: "c", Shift: "C" },
    $ g# S! j# K: [\" k1 n
  63.   d: { Symbol: "d", Shift: "D" },
    # W- `0 x9 O8 f* Z\" i4 r
  64.   e: { Symbol: "e", Shift: "E" },: H6 }$ j\" {\" W3 E' I0 [
  65.   f: { Symbol: "f", Shift: "F" },7 K( }6 z\" g8 f- E. g
  66.   g: { Symbol: "g", Shift: "G" },; F+ v7 z6 l7 C) z5 `) g. Q
  67.   h: { Symbol: "h", Shift: "H" },  }( L3 m  k- Y& u
  68.   i: { Symbol: "i", Shift: "I" },1 Y\" o2 a\" X& d8 \5 K5 P* v& M
  69.   j: { Symbol: "j", Shift: "J" },. A  H) {1 [* c\" V1 U
  70.   k: { Symbol: "k", Shift: "K" },5 A0 U0 R: h7 z& w9 B; M( S
  71.   l: { Symbol: "l", Shift: "L" },
    ) h$ D5 @- i. x: v6 R. R8 ]: s
  72.   m: { Symbol: "m", Shift: "M" },) _# g! |8 g# h
  73.   n: { Symbol: "n", Shift: "N" },& W. |) p# s3 e
  74.   o: { Symbol: "o", Shift: "O" },! P% T3 e2 B& T& `2 ~
  75.   p: { Symbol: "p", Shift: "P" },
    $ N7 @6 n8 L1 C) A2 a- T
  76.   q: { Symbol: "q", Shift: "Q" },* @4 X7 j. P3 h$ n/ S
  77.   r: { Symbol: "r", Shift: "R" },
    6 {2 N% S9 L; m
  78.   s: { Symbol: "s", Shift: "S" },
    & e  d* {) i\" y) Y8 X, g- J( o
  79.   t: { Symbol: "t", Shift: "T" },
    + `4 ~3 [\" o\" f; @\" y& k5 w3 X
  80.   u: { Symbol: "u", Shift: "U" },
    2 n( H. [  x- I4 p- G/ x& k/ V* F0 Z; R  V
  81.   v: { Symbol: "v", Shift: "V" },
    & p& ?: Z3 a' D* t0 j; V4 J
  82.   w: { Symbol: "w", Shift: "W" },9 E9 Z/ ?0 w, D9 o
  83.   x: { Symbol: "x", Shift: "X" },
    0 Q+ b; M4 d/ I4 m8 `- ]: k; c
  84.   y: { Symbol: "y", Shift: "Y" },1 s# C8 t! R' C\" _  V! c
  85.   z: { Symbol: "z", Shift: "Z" },+ s, r! R/ L! g$ u3 q% _3 U0 n
  86.   "`": { Symbol: "`", Shift: "~" },
    + N1 S- @+ v4 R
  87.   "-": { Symbol: "-", Shift: "_" },
    + l- a5 e; T- X2 R! X8 t1 a
  88.   "=": { Symbol: "=", Shift: "+" },8 V5 |; I3 B' k  q% q% z
  89.   ";": { Symbol: ";", Shift: ":" },
    ) E% x3 l0 ?; x1 _+ S' h& f7 N0 }% m
  90.   "'": { Symbol: "'", Shift: '"' },
      F7 R+ p- h% V- M, b
  91.   "[": { Symbol: "[", Shift: "{" },5 \0 F$ D% A% @8 s% ^
  92.   "]": { Symbol: "]", Shift: "}" },4 c7 L8 O' j\" ^! x0 o2 r, h5 Y( Q
  93.   "\\": { Symbol: "\\", Shift: "|" },
    ' y0 a8 o$ z, S  C7 q
  94.   ",": { Symbol: ",", Shift: "<" },4 {& ~6 G$ d7 R3 X, T3 P
  95.   ".": { Symbol: ".", Shift: ">" },+ b6 B1 l- H/ v7 R2 d$ D
  96.   "/": { Symbol: "/", Shift: "?" },, B) X- h. W+ u5 X
  97.   Backspace: { Symbol: "⌫", Shift: "" },6 I1 W0 k( M0 F$ g5 J5 H4 A  h\" V
  98.   tab: { Symbol: "  ", Shift: "" },
    \" q* ^& b1 s1 A. J\" I
  99.   CapsLock: { Symbol: "⇪", Shift: "" },' I. O3 _  Y4 Q- @2 Q\" [
  100.   Shift: { Symbol: "⇧", Shift: "" },
      A( V4 @, M* n+ o/ r$ O
  101.   Enter: { Symbol: "⏎", Shift: "" },+ H( ]8 H5 j\" ]
  102.   Control: { Symbol: "⌃", Shift: "" },& W3 O, O4 A* H& R! \$ s9 Q
  103.   Alt: { Symbol: "Alt", Shift: "" },- h; F! H. a7 @  Q* M0 z
  104.   Meta: { Symbol: "⌘", Shift: "" },
    * c! j# Q\" Q* J- @( z5 F+ e! X\" V
  105.   ArrowLeft: { Symbol: "←", Shift: "" },& M% M! J7 o. L
  106.   ArrowUp: { Symbol: "↑", Shift: "" },4 a& Z  R1 w4 ?8 f9 l
  107.   ArrowDown: { Symbol: "↓", Shift: "" },
    * [7 W0 X+ I* [9 T* H/ P
  108.   ArrowRight: { Symbol: "→", Shift: "" },, Z  w0 x5 g; W& l: \& n4 Y, @; v
  109.   " ": { Symbol: " ", Shift: "" },6 _4 t/ [  I5 S3 I; D9 P
  110. };1 b/ F9 g5 v& ]: O5 @2 @* [5 j+ W
  111. let buttonMap = new Map();7 ^/ A2 ^  L: Z6 K
  112. let height = 32;
    5 ^, A1 g6 j6 e/ f
  113. let margin = 8;' m7 w5 o% D8 O. h0 C1 c
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);
    0 |! [, l; ^. k& y\" H0 F
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);0 J7 V: b6 y, X1 P  ~( t
  116. for (let row = 0; row < keys.length; row++) {
    5 {' j1 y, v* m6 ]0 H# t+ @- ]8 U# c5 X
  117.   let x = 32;- d1 m\" G# Q' Y. v% Q
  118.   let prev;) |  m8 V' |5 i; U9 g1 \, C
  119.   for (let i = 0; i < keys[row].length; i++) {
    / t6 X  ~2 F- f( C1 m
  120.     let key = keys[row][i];
    + ~% O( I$ u( a
  121.     let width = 32;% ~' c9 P& v/ O* L5 ~; B  C
  122.     let button;
    7 e9 h) ]  m8 M' ~0 I9 i& R
  123.     switch (key) {
    7 y0 X: j& F) [# E5 _
  124.       case "CapsLock":, q5 M4 _* Z2 Q' @
  125.         button = capslock;
    , d0 d) ]6 |* D$ V, i7 o
  126.         width = 64;0 r' d: m: T  N9 m9 I, i& V. j
  127.         break;
    0 ]/ f0 \- Y7 \+ q
  128.       case "Shift":
    * ]& J  _$ @6 X\" N
  129.         if (shift.x === 0) {+ W# o' Q. G3 x  O\" @
  130.           button = shift;
    % Z+ G* H) c5 [
  131.         } else {
      P$ g9 _+ P& U6 r0 N
  132.           button = interactive.button(* j- X# r2 F! M/ E+ v2 D5 @
  133.             0,  i* G* t& H6 W9 D6 |8 n\" ]' I) c# B  s
  134.             0,
    / I- j' h6 p% _2 r  z: E
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key/ l$ V, m# H4 M* }$ S
  136.           );
    + B7 {4 _2 O* _# r# D9 Y+ X' j
  137.         }) a/ T& W\" {0 N/ J9 [: Z4 x  Q& z  F
  138.         width = 90;& G; l& b, R9 E9 [5 V2 a
  139.         break;
    9 _. j4 m4 z  W  P, j$ S% u
  140.       case "tab":9 R. i7 S; N7 @\" \* Q0 D6 b' Q% V
  141.         width = 50;
    & I- h. [\" V% m' L' u$ ^
  142.         button = interactive.button(
    5 ?0 L* T2 o  \6 \0 \
  143.           0,+ G) e) x\" s8 s( k4 Q( I
  144.           0,. S. _* P/ Q( I* B% K. Z( N. M
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    6 d. B5 x4 B' E+ z\" O
  146.         );+ E3 ?) w  H& X2 m
  147.         break;6 V9 c8 l6 |. B+ p- \
  148.       case " ":
    # C  C/ T2 t) I2 f- c) E* w
  149.         width = 176;
    - s: H! Y% ~8 _/ B
  150.         button = interactive.button(
    ( `% v; G, T3 \' w
  151.           0,
    4 a0 t% |7 E) ]6 u+ N
  152.           0,
    : H\" T, X/ m+ V7 f' M: ~
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    . K) Y9 u4 Q7 K  K
  154.         );- x- ?. u\" E# N9 U4 _
  155.         break;4 M9 a2 P, I; @0 P' G, Q
  156.       case "Meta":
    0 v# M\" |) B$ r, |% E\" ~0 j2 ^; G
  157.         width = 50;
    1 D7 p, }, q! B/ X
  158.         button = interactive.button(
    9 K9 S% S% y  J
  159.           0,
    $ j0 F' n$ w3 X( o; m
  160.           0,% k; a% l$ K5 l\" F; W9 n. b) w
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    ( M7 v8 R1 A; X+ B* Q/ {! E7 x* e
  162.         );
    ; f3 P  @6 k7 S) V
  163.         break;
    % p/ u( Q$ Y7 K0 r
  164.       default:; V. M3 @* q1 a  [: ?, s- ]0 k
  165.         button = interactive.button(
    8 \8 I! u7 o' @  O- U; F7 i
  166.           0,
    - h) W, j- w/ C# p  r+ ^6 Q; r$ i
  167.           0,
    % u! l0 B: ?. ^* ~: K
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key( B; A4 S6 f6 J% i4 K6 a! P$ i
  169.         );! p7 m( ^  M. ?/ r
  170.         if (keycodes[key] != undefined) {* h9 P0 R) H7 ]/ e
  171.           if (keycodes[key].Shift != "") {+ }6 x' x7 z8 p& m9 b& ]+ z
  172.             button.addDependency(shift, capslock);
    . O+ n: c& B! W. J8 R\" G
  173.             button.update = () => {$ W( W\" H' p# T5 C3 X7 F
  174.               if (shift.active || capslock.active) {
      F, b/ R  I; _1 ]& W2 f7 E$ d
  175.                 button.label.contents = keycodes[key].Shift;
    7 [; J) Z9 S# J
  176.               } else {
    \" c0 v( M) h  O' I8 U  M, @/ N) O
  177.                 button.label.contents = keycodes[key].Symbol;
    & c: Z  e/ E7 {, a9 ~$ p; o. a$ l
  178.               }# y/ F& n& k, m$ G5 T' B8 x( S- @
  179.             };
    / q3 L4 ^1 q0 {
  180.           }! e* ]0 M5 X( L3 k1 G
  181.         }& l* ^) Z) m) |' A4 S$ ?2 \
  182.     }6 F( t5 @: Q: q4 H# I/ ^; K( S! ]
  183.     button.x = x;  D4 w$ p# h9 }# ?
  184.     button.y = 64 + row * (height + margin);! F1 w$ T( i2 J9 c2 Q% s( s
  185.     if (button.box.width < width) {- p$ ?9 [! @' }4 F- c
  186.       button.box.width = width;
    8 M2 {: g3 _\" R\" y/ v4 [+ i
  187.     }
    : e$ o+ e# L# `( ~4 V
  188.     let bbox = button.root.getBBox();; ?) b5 x8 Z- K8 q4 D& o5 |
  189.     x += bbox.width + margin;% B* O  V4 }6 o& a6 M0 N
  190.     buttons.push(button);; E/ ]3 T3 `3 W2 T8 p
  191.     prev = button;& @, G# `, v0 l. A+ u. R
  192.     buttonMap.set(key, button);5 w4 S: G\" d/ ?7 B0 \6 n& S; t
  193.     if (key === "ArrowUp") {
    9 V\" ~' f- s. E\" @& Q
  194.       button.box.height = 16;  s5 j, S# e+ T$ h7 j
  195.       button.label.root.style.display = "none";4 ?7 I, a8 m: S( R1 @( Z
  196.     } else if (key === "ArrowDown") {( c* p4 o- ?1 A\" [+ J* M* e! Q
  197.       button.box.height = 16;
    8 b# O2 k4 ?  Y
  198.       button.x -= 32 + margin;
      I- ~6 d. d1 C3 W
  199.       button.y += 16;1 m9 y# o1 s, Q- E
  200.       button.label.root.style.display = "none";
    + P' I5 c+ ^4 a5 d8 w0 k6 E8 I5 x# L
  201.       x -= bbox.width + margin;
    * J+ j5 C+ r7 ^, k
  202.     }
    \" ?1 ^3 S/ O# a  Q6 ^& a' q# e
  203.   }
    \" c8 [, o2 `1 U# k
  204.   let right = prev.x;
    + z. _8 O& ~3 @) V. j
  205.   if (right < 630) {
    4 ~9 S4 d8 ^: ~+ [9 d: o
  206.     prev.box.width = 630 - right;
    ) S$ B0 ]4 F7 t& f, H: L2 _\" @, J
  207.   }
    2 Y4 e6 J' x/ Z1 I. F, ~. [
  208. }
    ) l( p3 c& Q1 G* ^8 L/ _
  209. // console.log(keycodes["0"], shift, capslock);) E9 `- ]% o3 ?) {
  210. let active = [];& d0 |% V6 @- L0 N! O2 F- H) Q
  211. window.onkeydown = function (event) {
    : R( U1 \1 {$ `  I\" l/ R
  212.   for (let i = 0; i < buttons.length; i++) {8 I% C$ Y4 A% {
  213.     let button = buttons[i];+ E: x4 F. P: I5 ^# u' j
  214.     if (
    6 p/ X- N* ]& ^& C0 X7 W
  215.       button.label.contents === event.key ||& E  d  B, u$ f# Y3 |
  216.       (keycodes[event.key] != undefined &&6 m. i/ e% g& b# g3 d  N# ]9 W+ H
  217.         button.label.contents === keycodes[event.key].Symbol)
    ! X' ^( m& r3 n% Y4 O
  218.     ) {
    \" r. O% H; ?  v2 F\" [
  219.       button.box.style.fill = "#f8f8f8";
    # N# {; @% H( X: t; n
  220.       button.label.style.fill = "#404040";( i, ?# n7 e2 ?9 T! H; Q
  221.       button.active = true;/ }1 B\" E1 P) Y, _% Y
  222.       active.push(button);
    1 v5 F+ b: u2 ]$ e) Y
  223.     }
    8 r+ p2 j5 [& S
  224.   }
    0 N% {  Z5 C( F: K, y\" f
  225.   buffer += `'${event.key}',`;
    ' N4 D  ^8 ?2 O! @: G4 c
  226. };; ?; u6 \/ ~: m; j0 u
  227. window.onkeyup = function (event) {9 e7 D& X9 D* n8 G1 V
  228.   let newActive = [];5 G5 X& l% Q# l; Z5 N  K3 _, w
  229.   for (let button of active) {4 L8 ~3 p; X1 p9 u  l
  230.     if (1 I2 S. q\" O/ r  k
  231.       button.label.contents === event.key ||
      x$ [2 P3 n8 R* d& z
  232.       (keycodes[event.key] != undefined &&7 i- D  R# J' x1 h% L7 ^5 `
  233.         button.label.contents === keycodes[event.key].Symbol)
    % h/ F+ T2 R  M  q
  234.     ) {
    ( y/ V; B& h3 R. A6 X9 c
  235.       button.box.style.fill = "";
    & ]\" e0 |1 m* O+ Q9 O
  236.       button.label.style.fill = "";* B1 {% x8 K% W$ }/ K& F# M9 T6 U
  237.       button.active = false;0 L6 h9 @9 Q0 G/ [
  238.     } else {
    ) [9 \. x+ }! g8 S+ X  B+ G
  239.       newActive.push(button);0 H* B7 F* }' B7 A
  240.     }
    6 B; K: a! `4 P+ B3 ~5 R
  241.   }
    ) L, C  Z\" V3 r
  242.   active = newActive;
    * l8 Y\" E; L1 a\" X, ^9 s9 j5 g9 b* j
  243. };* y7 E5 g& V: g# m. }4 |
  244. let bbox = interactive.input.root.getBBox();. D  p, g( A- i: t6 Q' C: H6 m; F
  245. interactive.setViewBox(
    9 r$ Y& ^0 \# ^7 R3 k7 Q
  246.   bbox.x - margin,7 m5 L- T6 d7 ]' j9 C+ X8 x
  247.   bbox.y,' K$ D' s5 ^9 O- m# P\" A# ~
  248.   bbox.width + 2 * margin,
    & T: P+ w; `$ L\" g7 H6 j
  249.   bbox.height9 Y  A4 p6 ~2 K& `+ X
  250. );% z# v7 o& {. R* a! P
  251. //# sourceMappingURL=keyboard.js.map0 Z# s  r! `2 t5 o6 _( C( T

  252. . r* u3 H- W\" [) w# t5 K& d
复制代码

- J0 T, {2 I, E! u
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2024-5-9 22:16 , Processed in 0.462834 second(s), 50 queries .

回顶部