├── Dockerfile ├── Dockerfile-ubuntu ├── key_linux.h ├── key_macos.h └── README.md /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine 2 | 3 | MAINTAINER ilkou 4 | 5 | RUN apk update && \ 6 | apk upgrade && \ 7 | apk add build-base git vim 8 | 9 | RUN git clone https://github.com/42Paris/minilibx-linux mlx && \ 10 | apk add libxext-dev && \ 11 | apk add libbsd-dev 12 | 13 | RUN cd mlx; ./configure && \ 14 | cp libmlx.a /usr/local/lib/ && \ 15 | mkdir /usr/local/include && \ 16 | cp mlx.h /usr/local/include/mlx.h 17 | 18 | ENTRYPOINT echo -e "Check https://github.com/ilkou/minilibx for more notes !\nHappy coding ^^"; /bin/sh 19 | -------------------------------------------------------------------------------- /Dockerfile-ubuntu: -------------------------------------------------------------------------------- 1 | FROM ubuntu 2 | 3 | MAINTAINER ilkou 4 | 5 | RUN apt-get update -y && \ 6 | apt-get upgrade -y && \ 7 | apt-get install build-essential git vim -y 8 | 9 | RUN git clone https://github.com/42Paris/minilibx-linux mlx && \ 10 | apt-get install libxext-dev -y && \ 11 | apt-get install libbsd-dev -y 12 | 13 | RUN cd mlx; ./configure && \ 14 | cp libmlx.a /usr/local/lib/ && \ 15 | cp mlx.h /usr/local/include/ 16 | 17 | ENTRYPOINT echo -e "Check https://github.com/ilkou/minilibx for more notes !\nHappy coding ^^"; /bin/sh 18 | -------------------------------------------------------------------------------- /key_linux.h: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* key_linux.h :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: oouklich +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2018/01/19 17:40:13 by oouklich #+# #+# */ 9 | /* Updated: 2019/12/28 22:20:10 by oouklich ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #ifndef KEY_LINUX_H 14 | # define KEY_LINUX_H 15 | 16 | /* 17 | ** Keyboard LETTERS 18 | */ 19 | 20 | # define K_A 97 21 | # define K_B 98 22 | # define K_C 99 23 | # define K_D 100 24 | # define K_E 101 25 | # define K_F 102 26 | # define K_G 103 27 | # define K_H 104 28 | # define K_I 105 29 | # define K_J 106 30 | # define K_K 107 31 | # define K_L 108 32 | # define K_M 109 33 | # define K_N 110 34 | # define K_O 111 35 | # define K_P 112 36 | # define K_Q 113 37 | # define K_R 114 38 | # define K_S 115 39 | # define K_T 116 40 | # define K_U 117 41 | # define K_V 118 42 | # define K_W 119 43 | # define K_X 120 44 | # define K_Y 121 45 | # define K_Z 122 46 | 47 | /* 48 | ** Keyboard ARROWS 49 | */ 50 | 51 | # define K_AR_L 65361 52 | # define K_AR_R 65363 53 | # define K_AR_U 65362 54 | # define K_AR_D 65364 55 | 56 | /* 57 | ** Keyboard NUMPAD 58 | */ 59 | 60 | # define K_NP_DIV 65455 61 | # define K_NP_MUL 65450 62 | # define K_NP_MIN 65453 63 | # define K_NP_PLU 65451 64 | 65 | /* 66 | ** Keyboard MISC 67 | */ 68 | 69 | # define K_SP 32 70 | # define K_ESC 65307 71 | 72 | /* 73 | ** Mouse 74 | */ 75 | 76 | # define M_CLK_L 1 77 | # define M_CLK_R 3 78 | # define M_CLK_M 2 79 | # define M_SCR_U 4 80 | # define M_SCR_D 5 81 | 82 | #endif 83 | -------------------------------------------------------------------------------- /key_macos.h: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* key_macos.h :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: oouklich +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2018/01/19 17:40:13 by oouklich #+# #+# */ 9 | /* Updated: 2019/12/28 22:20:38 by oouklich ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #ifndef KEY_MACOS_H 14 | # define KEY_MACOS_H 15 | 16 | /* 17 | ** Keyboard LETTERS 18 | */ 19 | 20 | # define K_A 0 21 | # define K_B 11 22 | # define K_C 8 23 | # define K_D 2 24 | # define K_E 14 25 | # define K_F 3 26 | # define K_G 5 27 | # define K_H 4 28 | # define K_I 34 29 | # define K_J 38 30 | # define K_K 40 31 | # define K_L 37 32 | # define K_M 46 33 | # define K_N 45 34 | # define K_O 31 35 | # define K_P 35 36 | # define K_Q 12 37 | # define K_R 15 38 | # define K_S 1 39 | # define K_T 17 40 | # define K_U 32 41 | # define K_V 9 42 | # define K_W 13 43 | # define K_X 7 44 | # define K_Y 16 45 | # define K_Z 6 46 | 47 | /* 48 | ** Keyboard ARROWS 49 | */ 50 | 51 | # define K_AR_L 123 52 | # define K_AR_R 124 53 | # define K_AR_U 126 54 | # define K_AR_D 125 55 | 56 | /* 57 | ** Keyboard NUMPAD 58 | */ 59 | 60 | # define K_NP_DIV 75 61 | # define K_NP_MUL 67 62 | # define K_NP_MIN 78 63 | # define K_NP_PLU 69 64 | # define K_NP_1 83 65 | # define K_NP_2 84 66 | # define K_NP_3 85 67 | # define K_NP_4 86 68 | # define K_NP_5 87 69 | # define K_NP_6 88 70 | # define K_NP_7 89 71 | # define K_NP_8 91 72 | # define K_NP_9 92 73 | 74 | /* 75 | ** Keyboard MISC 76 | */ 77 | 78 | # define K_SP 49 79 | # define K_ESC 53 80 | # define K_TAB 48 81 | 82 | /* 83 | ** Mouse 84 | */ 85 | 86 | # define M_CLK_L 1 87 | # define M_CLK_R 3 88 | # define M_CLK_M 2 89 | # define M_SCR_U 4 90 | # define M_SCR_D 5 91 | 92 | #endif 93 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [MiniLibX in Linux / Windows](https://github.com/ilkou/minilibx) · [![made-with-bash](https://img.shields.io/badge/Made%20with-Bash-1f425f.svg)](https://www.gnu.org/software/bash/) [![Maintenance](https://img.shields.io/badge/Maintained%3F-no-red.svg)](https://GitHub.com/ilkou/minilibx/graphs/commit-activity) [![Ask Me Anything !](https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg)](https://ilkou.github.io) [![GitHub stars](https://img.shields.io/github/stars/ilkou/minilibx?style=social&label=Star&maxAge=2592000)](https://github.com/ilkou/minilibx/stargazers) [![GitHub contributors](https://img.shields.io/github/contributors/ilkou/minilibx)](https://github.com/ilkou/minilibx/graphs/contributors) 2 | 3 | Minilibx is a very basic graphical library written in C used in 42 4 | and in Epitech for infography project. 5 | 6 | ## Steps : 7 | 8 | ### Update/upgrade your system: 9 | 10 | * apt-get update 11 | * apt-get upgrade 12 | 13 | ### Install the following packages: 14 | 15 | * apt install libx11-dev 16 | * apt install libxext-dev 17 | * apt install libbsd-dev 18 | * apt install clang 19 | 20 | ## Get minilibx sources: 21 | ``` 22 | git clone https://github.com/42Paris/minilibx-linux minilibx_linux 23 | ``` 24 | 25 | #### Compile and install mlx.a in minilibx_linux with 26 | 27 | * cd minilibx_linux; make && sudo ./configure 28 | 29 | #### Change MLXFLAGS in your makefile to: 30 | 31 | * MLXFLAG = -lmlx -lXext -lX11 32 | 33 | ## Notes for windows 34 | ``` 35 | * install ubuntu terminal (or other distribution linux ) on windows 10 from windows store 36 | 37 | * do the previous steps + you have to install gcc and make 38 | ``` 39 | ### Graphical programs 40 | 41 | to run graphical programs on your windows 10 desktop 42 | 43 | you need a GUI server, such as X11. Such doesn’t not exist for Windows, 44 | 45 | but there are alternatives, one of which is Xming, which can be downloaded 46 | 47 | free of charge, from [SourceForge](https://sourceforge.net/projects/xming/) (set private when ask) 48 | 49 | then enable bash to use xming which can be done by typing the following line 50 | 51 | ``` 52 | echo "export DISPLAY=localhost:0.0" >> ~/.bashrc 53 | ``` 54 | 55 | its preferable to launch xming automatically after boot, move xming program to the following repo: 56 | 57 | * C:\Users\login\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 58 | 59 | 60 | - after adding variables such DISPLAY, open a new bash session by typing 61 | ``` 62 | bash 63 | ``` 64 | or 65 | ``` 66 | source ~/.bashrc 67 | ``` 68 | ### Extra notes: 69 | * the process is explained using bash shell, you should modify it by whatever shell you are using (zsh, sh, ..) 70 | * for events management, the mask should be (1L << 0) instead of 0 71 | ``` 72 | mlx_hook(p.win_ptr, 2, (1L << 0), ft_event_keys, &p); 73 | ``` 74 | * to simplify the usage of keys macros in mac os and linux, include key_macos.h and key_linux.h files: 75 | ``` 76 | # if defined(__APPLE__) 77 | # include 78 | # else 79 | # include 80 | # endif 81 | ``` 82 | 83 | ### Docker image 84 | 85 | based on alpine: `ilkou/minilibx` or `ilkou/minilibx:1.0.0` 86 | 87 | based on ubuntu: `ilkou/minilibx:ubuntu` 88 | --------------------------------------------------------------------------------