Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
6fa11d3
feat: keymanweb new interfaces are done part 1
Meng-Heng Nov 5, 2024
b3c9feb
add js link
Meng-Heng Nov 5, 2024
4e061e9
feat: another update to the header styles, header layout, and languag…
Meng-Heng Nov 14, 2024
bc905cb
feat: delete a new folder frontend_kmw/index.php
Meng-Heng Nov 14, 2024
2bc69d2
Merge branch 'master' of https://github.com/keymanapp/keymanweb.com i…
Meng-Heng Jan 15, 2025
2fccf98
feat: a prototype design for keymanweb with new styles and scripts
Meng-Heng Feb 19, 2025
b2a8b50
feat: css media query, clean unused css & js, js resize and default w…
Meng-Heng Feb 21, 2025
aa56b75
feat: media queries, and header and body operation
Meng-Heng Mar 5, 2025
b43de40
feat: add more functions for kmw-header and some animations
Meng-Heng Mar 21, 2025
9a5d7f6
feat: add new keyboard selection, tools, disable kb in search, hambur…
Meng-Heng Apr 22, 2025
2f6ee73
Revert "feat: add new keyboard selection, tools, disable kb in search…
Meng-Heng Apr 22, 2025
c9b4e9e
feat: more on kmw
Meng-Heng Apr 22, 2025
8eb13ae
Merge branch 'kmw-redev/mh' of https://github.com/keymanapp/keymanweb…
Meng-Heng May 8, 2025
5e28ad7
Merge branch 'master' of https://github.com/keymanapp/keymanweb.com i…
Meng-Heng Jun 4, 2025
933576b
Merge pull request #2 from keymanapp/master
Meng-Heng Jun 4, 2025
5f0cb3b
feat: ui for search, different location for tools, and prep for fetch…
Meng-Heng Jun 5, 2025
58f6cd6
feat: search
Meng-Heng Jun 5, 2025
3f31133
Revert "feat: search"
Meng-Heng Jun 5, 2025
078a8ce
feat: integrate KeymanWeb Map with polished components and usability …
Meng-Heng Jun 17, 2025
83389eb
feat: two different search UIs, tick on kb click, kb count, and prepa…
Meng-Heng Jun 23, 2025
b877edf
feats: UI for keyboard limitation, keyboard details, keyboard selecti…
Meng-Heng Jul 3, 2025
d7a0046
feat: keyboards, examples, styles, text dir, fix some bugs
Meng-Heng Jul 23, 2025
7577279
modularize functions, add validations, and rename
Meng-Heng Aug 18, 2025
b107991
feats: modularize functions, add validation, and rename
Meng-Heng Aug 18, 2025
5fee5dc
feats: remove js references
Meng-Heng Aug 18, 2025
b620bf5
Merge branch 'keymanapp:master' into kmw-redev
Meng-Heng Oct 2, 2025
ed07a5a
feat: introduce and start devices styling, apply drag between kb and …
Meng-Heng Oct 2, 2025
326c4a2
Merge branch 'keymanapp:master' into master
Meng-Heng Oct 2, 2025
4554e88
Merge branch 'kmw-redev/mh' of https://github.com/keymanapp/keymanweb…
Meng-Heng Oct 3, 2025
daf1c49
merge keymanapp:kmw-redev/mh to Meng-Heng:kmw-redev
Meng-Heng Oct 6, 2025
28d4ba0
chore" remove `resources/.bootstrap-registry`
Meng-Heng Oct 6, 2025
6ef0aca
Revert "feat: introduce and start devices styling, apply drag between…
Meng-Heng Oct 6, 2025
d124479
chore: add files
Meng-Heng Oct 6, 2025
8d3c477
chore: add languageexample.php
Meng-Heng Oct 6, 2025
e732fd0
chore: add renderLanguageExample.php
Meng-Heng Oct 6, 2025
06e5644
chore: add bootstrap files
Meng-Heng Oct 6, 2025
18b2916
chore: add index.php
Meng-Heng Oct 6, 2025
4f31709
chore: add head.php
Meng-Heng Oct 6, 2025
fddc10a
chore: add styles files
Meng-Heng Oct 6, 2025
aec44d2
chore: add js files
Meng-Heng Oct 6, 2025
a13f8e9
feat: remove unused images
Meng-Heng Oct 6, 2025
f3224cf
docs: add Docker instructions to README.md
mcdurdin Oct 14, 2025
7dd8364
Merge pull request #170 from keymanapp/docs/readme-refresh
mcdurdin Oct 17, 2025
8590fc5
chore: update BOOTSTRAP_VERSION to v1.0.7
keyman-server Oct 17, 2025
fd5145b
Merge pull request #171 from keymanapp/auto/update-bootstrap-version-…
keyman-status Oct 17, 2025
0185b3e
Merge branch 'master' of https://github.com/keymanapp/keymanweb.com i…
Meng-Heng Nov 24, 2025
b58b355
Merge branch 'keymanapp:master' into master
Meng-Heng Nov 24, 2025
05c8dfd
chore: update BOOTSTRAP_VERSION to v1.08
keyman-server Nov 26, 2025
9955bb8
Merge pull request #173 from keymanapp/auto/update-bootstrap-version-…
keyman-status Nov 26, 2025
0318062
Merge branch 'master' of https://github.com/keymanapp/keymanweb.com i…
Meng-Heng Jan 9, 2026
eea9658
feat: divide scripts into operation and feature folders; functions an…
Meng-Heng Jan 9, 2026
cb770c2
Merge branch 'keymanapp:master' into master
Meng-Heng Jan 9, 2026
2a25c94
Merge branch 'master' of https://github.com/Meng-Heng/keymanweb.com i…
Meng-Heng Jan 12, 2026
170b997
fix: remove include fix.php in index
Meng-Heng Feb 9, 2026
ac25a81
Merge pull request #3 from Meng-Heng/fix/remove-foot-php
Meng-Heng Feb 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 104 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,106 @@
# keymanweb.com

Home page for online web keyboard with support for over 2000 languages
This is the source for the website https://keymanweb.com/, which hosts the
KeymanWeb online keyboard supporting over 2500 different languages. This site
runs on Apache in a Docker container.

## Other Keyman websites

* **[api.keyman.com]** - database backend for Keyman websites
* **[help.keyman.com]** - documentation home for Keyman
* **[keyman.com]** - Keyman home
* **[keymanweb.com]** - KeymanWeb online keyboard
* **[s.keyman.com]** - static Javascript, font, and related resources
* **[website-local-proxy]** - run all Keyman sites on localhost on the same port

## How to run keymanweb.com locally

When run locally, this site can be accessed at http://localhost:8057 or
http://web.keyman.com.localhost:8057. Note that the site is internally called
web.keyman.com, but the public site is at keymanweb.com; web.keyman.com
automatically forwards to keymanweb.com.

**Recommended:** Use [website-local-proxy] to run multiple keyman.com sites
all from the same port (default port 80).

**Recommended:** Use [shared-sites] to control startup and shutdown of all
keyman.com sites together.

### Prerequisites

The host machine needs the following apps installed:
* [Git]
* Bash 5.x (on Windows, you can use Git Bash that comes with [Git])
* [Docker Desktop]

<details>
<summary>Configuration of Docker on Windows</summary>

On Windows machines, you can setup Docker in two different ways, either of
which should work:
* [Enable Hyper-V on Windows 11](https://techcommunity.microsoft.com/t5/educator-developer-blog/step-by-step-enabling-hyper-v-for-use-on-windows-11/ba-p/3745905)
* [WSL2](https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-10#1-overview)

</details>

### Actions

#### Build the Docker image

The first time you want to start up the site, or if there have been Docker
configuration changes, you will need to rebuild the Docker images. Start a bash
shell, and from this folder, run:

```sh
./build.sh build
```

#### Start the Docker container

To start up the website, in bash, run:

```sh
./build.sh start --debug
```

Once the container starts, you can access the web.keyman.com site at
http://localhost:8057 or http://web.keyman.com.localhost:8057. Note that the
site is internally called web.keyman.com, but the public site is at
keymanweb.com; web.keyman.com automatically forwards to keymanweb.com.

#### Stop the Docker container

In bash, run:

```sh
./build.sh stop
```

#### Remove the Docker container and image

In bash, run:

```sh
./build.sh clean
```

#### Running tests

To check for broken links and .php file conformance, when the site is running,
in bash, run:

```sh
./build.sh test
```

[Git]: https://git-scm.com/downloads
[Docker Desktop]: https://docs.docker.com/get-docker/
[api.keyman.com]: https://github.com/keymanapp/api.keyman.com
[help.keyman.com]: https://github.com/keymanapp/help.keyman.com
[keyman.com]: https://github.com/keymanapp/keyman.com
[keymanweb.com]: https://github.com/keymanapp/keymanweb.com
[s.keyman.com]: https://github.com/keymanapp/s.keyman.com
[website-local-proxy]: https://github.com/keymanapp/website-local-proxy
[shared-sites]: https://github.com/keymanapp/shared-sites
[enable Hyper-V]: https://techcommunity.microsoft.com/t5/educator-developer-blog/step-by-step-enabling-hyper-v-for-use-on-windows-11/ba-p/3745905
[enable WSL2]: https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-10#1-overview
2 changes: 1 addition & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
## START STANDARD SITE BUILD SCRIPT INCLUDE
readonly THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
readonly BOOTSTRAP="$(dirname "$THIS_SCRIPT")/resources/bootstrap.inc.sh"
readonly BOOTSTRAP_VERSION=v1.0.6
readonly BOOTSTRAP_VERSION=v1.08
[ -f "$BOOTSTRAP" ] && source "$BOOTSTRAP" || source <(curl -H "Cache-Control: no-cache" -fs https://raw.githubusercontent.com/keymanapp/shared-sites/$BOOTSTRAP_VERSION/bootstrap.inc.sh)
## END STANDARD SITE BUILD SCRIPT INCLUDE

Expand Down
Empty file removed cdn/dev/css/footer.css
Empty file.
139 changes: 139 additions & 0 deletions cdn/dev/css/kmw-body.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
/*
Name: KeymanWeb's Body Styles
Copyright: Copyright (C) 2025 SIL Global
Create Date: 5 November 2024

Modified Date:
Authors: Meng-Heng

History:

Description: All of the styles for KMW's Body
*/
/*
=========
==Icons==
=========
*/
.fa-grip-lines:hover {
cursor: grab;
}
/*
================
==Section Tag==
================
*/
.container-flex {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
/*
==============
==Text area==
==============
*/
.textarea-container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: var(--textarea-width);
height: var(--textarea-height);
}

.text-area {
padding: 10px;
resize: none;
width: 100%;
height: 100% !important;
box-shadow: var(--textarea-box);
font-size: 16px;
border: none;
padding: 10px;
line-height: 1.6em;
font-family:SindhiWeb,Verdana,GeezWeb,LaoWeb,TibetanWeb,MyanmarWeb,SinhalaWeb,TamilWeb,KhmerWeb,LatinWeb,OriyaWeb,EgyptianWeb !important;
}
/*
============
==Divider==
============
*/
.divider-container i {
opacity: 50%;
}

.divider-container i:hover {
color: var(--keyman-blue);
opacity: 100%;
}
/*
=====================================
==Items in the middle of the divider==
=====================================
*/
.middle-divider {
grid-area: middle;
text-align: center;
width: 100%;
height: 100%;
z-index: 1;
}
/*
=============
==Keyboard==
=============
*/
.keyboard-container {
width: 70vw;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}

.keyboard-area {
user-select: none;
flex: 1;
width: 70vw;
height: 100%;
border: var(--keyman-blue) 1px solid !important;
}

.phone.kmw-osk-frame, .tablet.kmw-osk-frame {
display: block !important;
position: relative !important;
height: 100% !important;
width: 100% !important;
max-width: 100vw !important;
max-height: 50vh !important;
z-index: 0 !important;
}
/*
=============
==Examples==
=============
*/
.example-box {
background-color: var(--keyman-blue);
color: white;
width: 70vw;
text-align: center;
padding: 5px;
border-bottom: 1px solid rgb(159, 159, 159);
}

#exampleBox {
visibility: visible !important;
}

.example-box p {
margin: 10px;
}

#example {
visibility: visible !important;
}

/* End of Section Tag */
Loading
Loading